import os
import numpy as np

def gen_golden_data_arctan():
    # 配置参数（保持原有结构）
    dtype = np.float16
    input_shape = [500, 1300]
    
    # 生成输入数据（范围设为-10到10以覆盖函数主要变化区域）
    # 使用混合分布：80%数据在[-5,5]内，20%在[-10,-5)和(5,10]范围内
    x = np.where(
        np.random.random(input_shape) < 0.8,
        np.random.uniform(-5, 5, input_shape),
        np.random.choice([-1, 1], input_shape) * np.random.uniform(5, 10, input_shape)
    ).astype(dtype)
    
    # 计算ArcTan
    golden = np.arctan(x).astype(dtype)
    
    # 创建输入输出目录（保持原有方式）
    os.makedirs("./input", exist_ok=True)
    os.makedirs("./output", exist_ok=True)
    
    # 保存文件（保持原有格式）
    x.tofile("./input/input_x.bin")
    golden.tofile("./output/golden.bin")
    
    # 打印数据统计信息（调试用）
    print("ArcTan数据统计：")
    print(f"输入范围: [{x.min():.2f}, {x.max():.2f}]")
    print(f"输出范围: [{golden.min():.6f}, {golden.max():.6f}]")
    print(f"理论极值: ±{np.pi/2:.6f}")

if __name__ == "__main__":
    gen_golden_data_arctan()